/*
 *  linux/lib/_exit.c
 *
 *  (C) 1991  Linus Torvalds
 */

// LIBRAY宏用于给Unistd.h使用，当定义了该宏时，unistd中包含了系统调用号等定义
// 不过没有看到其它用法不使用LIBRAY而引用unistd.h的用法
// 所以，看不出来这里有什么用
#define __LIBRARY__
#include <unistd.h>

// volatile指示该函数永远不会返回，即相当于加入__attribute__((noreturns))，可以产生更好的代码
// 可能是因为要加volatile，所以没有使用_syscall1
// 在main.c中有使用
 __attribute__((noreturn)) volatile void _exit(int exit_code)
{
	// init $0x80指令会触发软中断，执行系统调用
	__asm__ __volatile__("int $0x80"::"a" (__NR_exit),"b" (exit_code));
}
